﻿#ifndef PST_IWIDGETSIGNAL_H
#define PST_IWIDGETSIGNAL_H
#include <QObject>
#include <QPair>
#include <QHash>
#include <QString>
#include <QTime>
#include <QColor>
#include <QDialog>
#include <QSharedPointer>

#include "BaseModule/IBaseSignal.h"
#include "API_BaseWidget.h"


#define IWidgetSignalInstance BaseWidget::IWidgetSignal::getInstance()

class QStandardItem;

namespace pst
{
    class TextFileParser;
}

namespace BaseWidget
{
    class ThreadTask;

    // 控件/自定义数据的信号接口类
    class API_BASEWIDGET IWidgetSignal : public BaseModule::IBaseSignal
    {
        Q_OBJECT

    signals:

        void signal_updateAnimationButtonState();

        void signal_updateThunderstormZoneButtonState();

        void signal_setShowAnimationTextWidget(bool bShow);

        void signal_setToolBarAnimationDataInfo(const QString& type,
            const QString& unit, double currentValue, int totalNumber, int currentIndex);

        void signal_getThreeDDataSources(const void* reader, QString& sourcesStr);
        
        void signal_getTwoDDataSources(const pst::TextFileParser* textFileParser, QString& sourcesStr);

        //左侧工程树上关闭树
        void signal_closeTree(const QList<QStandardItem*>&);

        // 添加线程任务到线程管理中
        void signal_appendThreadTask(BaseWidget::ThreadTask* threadTask);

        void signal_setDisplayModelButtonCheckState(bool checked);

        void signal_setClipperButtonCheckState(bool checked);

        void signal_exitAddMarkerState();

        //设置界面按钮状态是否处于
        void signal_setToolButtonExportMotionGraph2InterfaceState(bool state);

    public:

        // 获取单例
        static IWidgetSignal* getInstance()
        {
            return (IWidgetSignal*)IBaseSignal::getInstance();
        }

    };

}

#endif
